package Services;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;

import com.google.gdata.client.GoogleAuthTokenFactory;
import com.google.gdata.util.AuthenticationException;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.apache.http.HttpEntity;

public class BloggerProfilerTest {

	public static void main(String[] args) throws Exception {

		String username = "synchrona.group@gmail.com";
		String password = "pass123456";
		String serviceName = "blogger";

		GoogleAuthTokenFactory factory = new GoogleAuthTokenFactory(
				serviceName, "", null);
		// Obtain authentication token from Google Accounts
		String token = factory.getAuthToken(username, password, null, null,
				serviceName, "");
		// System.out.println(token);

		String serviceUrl = "http://www.blogger.com/home";
		String loginUrl = "https://www.blogger.com/start?continue="
				+ URLEncoder.encode(serviceUrl, "UTF-8") + "&auth=" + token;

		HttpClient httpclient = new DefaultHttpClient();
		HttpGet httpgetHome = new HttpGet(loginUrl);
		HttpResponse response = httpclient.execute(httpgetHome);

		HttpEntity entity = response.getEntity();
		// System.out.println("Status: " + response.getStatusLine());
		if (entity != null) {
			// System.out.println("Blogger profile page: "+EntityUtils.toString(entity));
			entity.consumeContent();
		}

		String securityToken = "";
		String security_token = "";
		String USIradio = "";
		String USIerror = "";

		HttpGet httpgetEdit = new HttpGet(
				"http://www.blogger.com/edit-profile.g");
		response = httpclient.execute(httpgetEdit);
		entity = response.getEntity();
		System.out.println("Status: " + response.getStatusLine());
		if (entity != null) {
			String editPage = EntityUtils.toString(entity);
			String[] array = editPage
					.split("securityToken\" type=\"hidden\" value=\"");
			array = array[1].split("\">");
			securityToken = array[0];
			array = editPage.split("security_token\" value=\"");
			array = array[1].split("\">");
			security_token = array[0];
			array = editPage.split("id=\"USI_");
			array = array[1].split("_asynchronous");
			String USI = array[0];
			USIradio = "USI_" + USI + "_imgSrcRadio";
			USIerror = "USI_" + USI + "_imgUrlTextError";
			// System.out.println("1:"+securityToken);
			// System.out.println("2:"+security_token);
			// System.out.println("3:"+USI);
			entity.consumeContent();
		}

		// update profile
		HttpPost httpostProfile = new HttpPost(
				"http://www.blogger.com/edit-profile.do");
		List nvps = new ArrayList();
		nvps.add(new BasicNameValuePair("securityToken", securityToken));
		nvps.add(new BasicNameValuePair("security_token", security_token));
		nvps.add(new BasicNameValuePair("enable", "true"));
		nvps.add(new BasicNameValuePair("showName", "true"));
		nvps.add(new BasicNameValuePair("showEmail", "true"));
		// nvps.add(new BasicNameValuePair("showFollowed","true"));//check
		nvps.add(new BasicNameValuePair("email", "synchrona.group@gmail.com"));
		nvps.add(new BasicNameValuePair("widget.displayname", "Synchrona"));
		nvps.add(new BasicNameValuePair("firstname", "Eureka"));
		nvps.add(new BasicNameValuePair("lastname", ""));

		nvps.add(new BasicNameValuePair("photourl", ""));
		nvps.add(new BasicNameValuePair("photowidth", ""));
		nvps.add(new BasicNameValuePair("photoheight", ""));
		// nvps.add(new BasicNameValuePair("USI_1pqgkpdqj4c5y_imgSrcRadio"
		// ,"on"));
		nvps.add(new BasicNameValuePair("imageFileName", ""));
		nvps.add(new BasicNameValuePair(USIradio, "on"));
		nvps.add(new BasicNameValuePair(USIerror, ""));

		nvps.add(new BasicNameValuePair("audioclipurl", ""));
		nvps.add(new BasicNameValuePair("gender", "FEMALE"));
		//
		nvps.add(new BasicNameValuePair("birthmonth", ""));
		nvps.add(new BasicNameValuePair("birthday", ""));
		nvps.add(new BasicNameValuePair("birthyear", ""));
		nvps.add(new BasicNameValuePair("showAstrologicalSigns", "true"));
		nvps.add(new BasicNameValuePair("url", "ffffffffffffff"));
		nvps.add(new BasicNameValuePair("wishlisturl", "fffffffffffff"));
		nvps.add(new BasicNameValuePair("imusername", "ffffffffff"));
		nvps.add(new BasicNameValuePair("imnetwork", "_nil_"));// JABBER etc
		nvps.add(new BasicNameValuePair("widget.city", "ffffffffffff"));
		nvps.add(new BasicNameValuePair("widget.state", "ffffffffff"));
		nvps.add(new BasicNameValuePair("widget.country", "_nil_"));
		nvps.add(new BasicNameValuePair("ind", "_nil_"));
		nvps.add(new BasicNameValuePair("occupation", "sdfsdfsdf"));
		nvps.add(new BasicNameValuePair("interests", "sdfsdfsdf"));
		nvps.add(new BasicNameValuePair("widget.aboutme","I am a great project!:)"));
		nvps.add(new BasicNameValuePair("movies", "MATRIXxxxxxxxxxxxx"));
		nvps.add(new BasicNameValuePair("music", "sdfsdffffffffffffff"));
		nvps.add(new BasicNameValuePair("books", "sdfsdfffffffffffffffffffffff"));
		nvps.add(new BasicNameValuePair("wackyQuestion", "sdfsdf"));
		nvps.add(new BasicNameValuePair("wackyAnswer", "sdfsdf"));
		//
		nvps.add(new BasicNameValuePair("submitButton", "Save"));

		httpostProfile.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
		response = httpclient.execute(httpostProfile);
		entity = response.getEntity();
		System.out.println("Profile update: " + response.getStatusLine());
		if (entity != null) {
			System.out.println("Profile edit page: "
					+ EntityUtils.toString(entity));
			entity.consumeContent();
		}

		httpclient.getConnectionManager().shutdown();

	}
}
